package modelo.bd.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import modelo.bd.exception.DAOException;
import modelo.dominio.Seccion;
import modelo.servicio.Historicos;
import modelo.servicio.Secciones;

public class SeccionDAO extends AbstractDAO<Seccion> {

    @Override
    public void add(Seccion entity) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void deleteWhere(String condition) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void update(Seccion entity) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected ArrayList<Seccion> select() throws DAOException {
        try {
            ResultSet resultado = con.ejecutarConsulta(getQuery());
            ArrayList<Seccion> secciones = new ArrayList();
            while (resultado.next()) {
                Seccion seccion = new Seccion();
                seccion.setIdSeccion(resultado.getInt("ID_SECCION"));
                seccion.setNombre(resultado.getString("NOMBRE"));
                seccion.setAbreviacion(resultado.getString("ABREVIACION"));
                //seccion.setArea(Areas.instancia().obtenerPorId(resultado.getInt("ID_AREA")));
                seccion.setHistorico(Historicos.instancia().obtenerPorId(resultado.getInt("ID_HISTORICO")));
                String padre = resultado.getString("PADRE");
                if (padre != null) {               
                    seccion.setPadre(Secciones.instancia().obtenerPorId(Integer.parseInt(padre)));
                }
                secciones.add(seccion);
            }
            return secciones;
        } catch (SQLException ex) {
            throw new DAOException("Error en DAO Secciones " + ex.getMessage());
        }
    }

    @Override
    public ArrayList<Seccion> selectAll() throws DAOException {
        this.setQuery("SELECT * FROM SSMA_SECCIONES_T "
                + " WHERE ID_HISTORICO NOT IN "
                + " (SELECT ID_HISTORICO FROM SSMA_HISTORICO_T WHERE ESTADO = 'IN') "
                + " ORDER BY PADRE");
        return select();
    }

    @Override
    public ArrayList<Seccion> selectWhere(String condition) throws DAOException {
        String query = "SELECT * FROM SSMA_SECCIONES_T WHERE (" + condition + ")";
        query += " AND ID_HISTORICO NOT IN (SELECT ID_HISTORICO FROM SSMA_HISTORICO_T WHERE ESTADO = 'IN')";
        this.setQuery(query);
        return select();
    }

    

}
